﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dados_;
using System.ComponentModel;

namespace Negocios
{
    [DataObject]
    public class ProgramacaoBOMetodos
    {
        [DataObjectMethod(DataObjectMethodType.Insert,true)]
        public bool Inserir(ProgramacaoBO pBO)
        {
            
            ProgramacaoSQL pSQL = new ProgramacaoSQL();
            ProgramacaoVO pVO = new ProgramacaoVO();
            pVO.Id_programacao = pBO.Id;
            if (pBO.Canal != null)
            {
                pVO.IdCanal = pBO.Canal.Id; 
            }
            if (pBO.Episodio != null)
            {
                pVO.IdEpisodio = pBO.Episodio.Id; 
            }
            pVO.DataHora = pBO.Data_Hora;

            return (pSQL.Inserir(pVO) == 1);
        }

        public static List<ProgramacaoBO> getProgramacao(int idCanal)
        {
            List<ProgramacaoBO> listaBO = new List<ProgramacaoBO>();
            ProgramacaoSQL pDAO = new ProgramacaoSQL();
            List<ProgramacaoVO> listaVO = pDAO.getProgramacao(idCanal);
            ProgramacaoBO bo = new ProgramacaoBO();
            
            foreach (ProgramacaoVO vo in listaVO) {
                bo.Id = vo.Id_programacao;
                bo.Canal = new CanalBO(); bo.Canal.Id = vo.IdCanal;
                bo.Episodio = new EpisodioBO(); bo.Episodio.Id = vo.IdEpisodio;
                bo.Data_Hora = vo.DataHora;
                listaBO.Add(bo);
                bo = new ProgramacaoBO();
            }
            
            return listaBO;
        }

        [DataObjectMethod(DataObjectMethodType.Delete,true)]
        public bool Excluir(ProgramacaoBO pBO)
        {
            ProgramacaoSQL pSQL = new ProgramacaoSQL();
            ProgramacaoVO pVO = new ProgramacaoVO();
            pVO.Id_programacao = pBO.Id;

            return (pSQL.Excluir(pVO) == 1);
        }

        [DataObjectMethod(DataObjectMethodType.Select, true)]
        public ProgramacaoBO Consultar(int id)
        {
            id = 1;
            ProgramacaoSQL pSQL = new ProgramacaoSQL();
            ProgramacaoVO pVO =  pSQL.Consultar(id);
            ProgramacaoBO pBO = new ProgramacaoBO();
            pBO.Id = pVO.Id_programacao;
            if (pBO.Canal != null)
            {
                pBO.Canal.Id = pVO.IdCanal; 
            }
            pBO.Data_Hora = pVO.DataHora;
            if (pBO.Episodio != null)
            {
                pBO.Episodio.Id = pVO.IdEpisodio; 
            }

            return pBO;
        }
    }
}
